{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Tce3stUlHN0L"
      },
      "source": [
        "##### Copyright 2020 The TensorFlow Authors."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "cellView": "form",
        "id": "tuOe1ymfHZPu"
      },
      "outputs": [],
      "source": [
        "#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
        "# you may not use this file except in compliance with the License.\n",
        "# You may obtain a copy of the License at\n",
        "#\n",
        "# https://www.apache.org/licenses/LICENSE-2.0\n",
        "#\n",
        "# Unless required by applicable law or agreed to in writing, software\n",
        "# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
        "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
        "# See the License for the specific language governing permissions and\n",
        "# limitations under the License."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "MfBg1C5NB3X0"
      },
      "source": [
        "<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
        "  <td><a target=\"_blank\" href=\"https://www.tensorflow.org/io/tutorials/genome\"><img src=\"https://www.tensorflow.org/images/tf_logo_32px.png\">TensorFlow.org에서 보기</a></td>\n",
        "  <td><a target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/docs-l10n/blob/master/site/ko/io/tutorials/genome.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\">Google Colab에서 실행하기</a></td>\n",
        "  <td><a target=\"_blank\" href=\"https://github.com/tensorflow/docs-l10n/blob/master/site/ko/io/tutorials/genome.ipynb\"><img src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\">GitHub에서소스 보기</a></td>\n",
        "      <td><a href=\"https://storage.googleapis.com/tensorflow_docs/docs-l10n/site/ko/io/tutorials/genome.ipynb\"><img src=\"https://www.tensorflow.org/images/download_logo_32px.png\">노트북 다운로드하기</a></td>\n",
        "</table>"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "xHxb-dlhMIzW"
      },
      "source": [
        "## 개요\n",
        "\n",
        "이 튜토리얼은 일반적으로 사용되는 게놈 IO 기능을 제공하는 `tfio.genome` 패키지를 시연합니다. 즉, 여러 게놈 파일 형식을 읽고 데이터를 준비하기 위한 몇 가지 일반적인 연산도 제공합니다(예: 원-핫 인코딩 또는 Phred 품질을 확률로 구문 분석).\n",
        "\n",
        "이 패키지는 [Google Nucleus](https://github.com/google/nucleus) 라이브러리를 사용하여 일부 핵심 기능을 제공합니다. "
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "MUXex9ctTuDB"
      },
      "source": [
        "## 설정"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "IqR2PQG4ZaZ0"
      },
      "outputs": [],
      "source": [
        "try:\n",
        "  %tensorflow_version 2.x\n",
        "except Exception:\n",
        "  pass\n",
        "!pip install tensorflow-io"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "bkF2WtCMaJ-3"
      },
      "outputs": [],
      "source": [
        "import tensorflow_io as tfio\n",
        "import tensorflow as tf"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "6wkjlql3cOy0"
      },
      "source": [
        "## FASTQ 데이터\n",
        "\n",
        "FASTQ는 기본 품질 정보와 함께 두 가지 시퀀스 정보를 모두 저장하는 일반적인 게놈 파일 형식입니다.\n",
        "\n",
        "먼저, 샘플 `fastq` 파일을 다운로드하겠습니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "yASvppCxceBu"
      },
      "outputs": [],
      "source": [
        "# Download some sample data:\n",
        "!curl -OL https://raw.githubusercontent.com/tensorflow/io/master/tests/test_genome/test.fastq"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "3zekWXlVdprb"
      },
      "source": [
        "### FASTQ 데이터 읽기\n",
        "\n",
        "이제 `tfio.genome.read_fastq`를 사용하여 이 파일을 읽겠습니다(`tf.data` API는 곧 제공 예정)."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "vl761cHTc7N1"
      },
      "outputs": [],
      "source": [
        "fastq_data = tfio.genome.read_fastq(filename=\"test.fastq\")\n",
        "print(fastq_data.sequences)\n",
        "print(fastq_data.raw_quality)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "qxHjVKXzdx5W"
      },
      "source": [
        "보는 바와 같이 반환된 `fastq_data`에는 시퀀스에서 읽은 각 기본 정보의 품질에 관한 Phred 인코딩 품질 정보를 포함하는 `fastq_data.raw_quality`와 함께 fastq 파일(각각 크기가 다를 수 있음)에 있는 모든 시퀀스의 문자열 텐서인 `fastq_data.sequences`가 있습니다.\n",
        "\n",
        "### 품질\n",
        "\n",
        "관심이 있는 경우 도우미 op를 사용하여 이 품질 정보를 확률로 변환할 수 있습니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "6IYxfFI4eQTM"
      },
      "outputs": [],
      "source": [
        "quality = tfio.genome.phred_sequences_to_probability(fastq_data.raw_quality)\n",
        "print(quality.shape)\n",
        "print(quality.row_lengths().numpy())\n",
        "print(quality)"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "bg3wzTFzhcfS"
      },
      "source": [
        "### 원-핫 인코딩\n",
        "\n",
        "또한, 원-핫 인코더를 사용하여 `A` `T` `C` `G` 염기 서열로 구성된 게놈 시퀀스 데이터를 인코딩할 수도 있습니다. 인코딩에 도움이 되는 내장 연산이 있습니다.\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "oAiepmy8h32a"
      },
      "outputs": [],
      "source": [
        "print(tfio.genome.sequences_to_onehot.__doc__)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "oAiepmy8h32a"
      },
      "outputs": [],
      "source": [
        "print(tfio.genome.sequences_to_onehot.__doc__)"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "collapsed_sections": [
        "Tce3stUlHN0L"
      ],
      "name": "genome.ipynb",
      "toc_visible": true
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
